#ifndef DSPSIMULATOR_AND_H
#define DSPSIMULATOR_AND_H

#include "dspSimulator/targetMachine/dspInstruction.h"

class AND : public DspInstruction{
public:

    explicit AND(u64 address = 0, u64 baseCycle = 0) :
            DspInstruction("AND", address, baseCycle, 0) {};

    ~AND() override = default;

    AND(const AND &_and) = default;

    void generateIR(std::shared_ptr<IRGenerator> irGenerator, llvm::Function *function, RegCopy &regCopy) override;

    void generateIRInD(std::shared_ptr<IRGenerator> irGenerator, llvm::Function *function, RegCopy &regCopy);

    std::shared_ptr<Instruction> decode(std::shared_ptr<InstInfo> instInfo, u64 baseCycle) override;

    std::string toString() override;
};

#endif //DSPSIMULATOR_AND_H